package org.eclipse.uml2.diagram.common.part; import java.util.Collections; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.IPath; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.common.util.WrappedException; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.ui.model.WorkbenchContentProvider; public class ModelElementsContentHelper { private static final ITreeContentProvider myWorkbenchContentProvider = new WorkbenchContentProvider(); public static Object[] getChildren(Object parentElement, AdapterFactoryContentProvider contentProvier, ResourceSet resourceSet) { Object[] result = myWorkbenchContentProvider.getChildren(parentElement); if (result != null && result.length > 0) { return result; } if (parentElement instanceof IFile) { IFile modelFile = (IFile) parentElement; IPath resourcePath = modelFile.getFullPath(); try { Resource modelResource = resourceSet.getResource(URI.createPlatformResourceURI(resourcePath.toString(), true), true); return contentProvier.getChildren(modelResource); } catch (WrappedException e) { System.err.println("Failed to get resource for filepath " + resourcePath.toString()); //$NON-NLS-1$ } return Collections.EMPTY_LIST.toArray(); } return contentProvier.getChildren(parentElement); } }